library(tidyverse)
library(stringr)

# Set the directory to the location of the replication data
setwd("")

# Danish local and national data were collected separately
D <- read_csv("Data_Raw/RAW-DK.csv")

D <- D %>%
     rename(duration = `Duration (in seconds)`,
            V1_incivility = Q17, V2_incivility = Q77,
            V1_prejudice = Q19_1, V2_prejudice = Q78_1, 
            V1_opinion_diff = Q19_2, V2_opinion_diff = Q78_2, 
            V1_dislike_party = Q19_3, V2_dislike_party = Q78_3, 
            V1_discourage_pol = Q19_4, V2_discourage_pol = Q78_4, 
            V1_dissatisfied = Q19_5, V2_dissatisfied = Q78_5, 
            V1_troll_pol = Q19_6, V2_troll_pol = Q78_6, 
            V1_troll_user = Q19_7, V2_troll_user = Q78_7,
            
            conjoint1 = Q25, conjoint2 = Q47, conjoint3 = Q49,
            conjoint4 = Q51, conjoint5 = Q53__41, 

            resp_ideology = Q21, resp_gender = Q22, resp_party = Q36__46,
            resp_exposure = Q30) %>%
     mutate(duration = as.numeric(duration))

D <- D %>%
     mutate(V1_incivility = recode(V1_incivility, "10 (ekstremt respektløs)" = "10"),
            V1_incivility = recode(V1_incivility, "0 (Ikke respektløs)" = "0"),
            V2_incivility = recode(V2_incivility, "10 (ekstremt respektløs)" = "10"),
            V2_incivility = recode(V2_incivility, "0 (Ikke respektløs)" = "0")) %>%
     mutate(concern_disrespect = recode(Q32__27, "Slet ikke bekymret" = 1,
                                                  "Lidt bekymret" = 2,
                                                  "Noget bekymret" = 3,
                                                  "Overvejende bekymret" = 4,
                                                  "Ekstremt bekymret" = 5,
                                                  .default = NA_real_), 
            govt_action = recode(Q36__28, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_)) %>%
     mutate(V1_incivility = as.numeric(V1_incivility),
            V2_incivility = as.numeric(V2_incivility)) %>%
     mutate(V1_prejudice = recode(V1_prejudice, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_prejudice = recode(V2_prejudice, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V1_opinion_diff = recode(V1_opinion_diff, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_opinion_diff = recode(V2_opinion_diff, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V1_dislike_party = recode(V1_dislike_party, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_dislike_party = recode(V2_dislike_party, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V1_discourage_pol = recode(V1_discourage_pol, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_discourage_pol = recode(V2_discourage_pol, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),

            V1_dissatisfied = recode(V1_dissatisfied, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_dissatisfied = recode(V2_dissatisfied, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V1_troll_pol = recode(V1_troll_pol, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_troll_pol = recode(V2_troll_pol, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V1_troll_user = recode(V1_troll_user, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_),
            V2_troll_user = recode(V2_troll_user, "Helt uenig" = 1, "Delvist uenig" = 2, "Lidt uenig" = 3, "Lidt enig" = 4, "Delvist enig" = 5, "Helt enig" = 6, .default = NA_real_)) %>%
     mutate(resp_ideology = recode(resp_ideology, "(Venstre)0" = "0", "(Højre)\n10" = "10"),
            resp_gender = recode(resp_gender, "Kvinde" = "Female", "Mand" = "Male", "Andet" = "Other"),
            resp_ideology = as.numeric(resp_ideology),
            resp_exposure_binary = ifelse(!is.na(resp_exposure), "Experienced social media harassment", "Has not experienced social media harassment"),
            resp_exposure_sexist_remarks = ifelse((is.na(resp_exposure) | !str_detect(resp_exposure, "Sexistiske bemærkninger")), "No sexist remarks", "Sexist remarks"),
            resp_exposure_disrespectful_remarks = ifelse((is.na(resp_exposure) | !str_detect(resp_exposure, "Meget respektløse kommentarer")), "No disrespectful remarks", "Disrespectful remarks"),
            resp_exposure_sexualized_images = ifelse((is.na(resp_exposure) | !str_detect(resp_exposure, "Ydmygende eller seksuelt ladede billeder af dig spredt via sociale medier")), "No humiliating/sexually charged images of oneself", "Humiliating/sexually charged images of oneself"),
            resp_exposure_violent_threats = ifelse((is.na(resp_exposure) | !str_detect(resp_exposure, "Voldstrusler")), "No violent threats", "Violent threats"),
            resp_exposure_persistent_harassment = ifelse((is.na(resp_exposure) | !str_detect(resp_exposure, "Krænkelser \\(været eksponeret for insisterende og uønsket adfærd\\)")), "No persistent harassment", "Persistent harassment"),
            resp_personal_disrespect = recode(Q31, "Flere gange dagligt" = "Several times a day",
                                                   "Ca. én gang dagligt" = "About once a day",
                                                   "3-6 dage om ugen" = "3 to 6 days a week",
                                                   "1-2 dage om ugen" = "1 to 2 days a week",
                                                   "Mindre end en gang ugentligt" = "Every few weeks",
                                                   "Sjældent" = "Less often",
                                                   "Aldrig" = "Never"),
            resp_other_disrespect = recode(Q37, "Flere gange dagligt" = "Several times a day",
                                                "Ca. én gang dagligt" = "About once a day",
                                                "3-6 dage om ugen" = "3 to 6 days a week",
                                                "1-2 dage om ugen" = "1 to 2 days a week",
                                                "Mindre end en gang ugentligt" = "Every few weeks",
                                                "Sjældent" = "Less often",
                                                "Aldrig" = "Never"),
            resp_party = recode(resp_party, "Andre (angiv venligst):" = "Other",
                                            "Jeg opfatter ikke mine holdninger som værende tæt på nogle partier" = "Does not identify",
                                            "Venstre (V)" = "Venstre (V)",
                                            "Socialistisk Folkeparti (SF)" = "Socialistisk Folkeparti (SF)",
                                            "Socialdemokratiet (S)" = "Socialdemokratiet (S)",
                                            "Dansk Folkeparti (DF)" = "Dansk Folkeparti (DF)",
                                            "Det Konservative Folkeparti (KF)" = "Det Konservative Folkeparti (KF)",
                                            "Nye Borgerlige (NB)" = "Nye Borgerlige (NB)",
                                            "Liberal Alliance (LA)" = "Liberal Alliance (LA)",
                                            "Enhedslisten (EL)" = "Enhedslisten (EL)",
                                            "Radikale Venstre (RV)" = "Radikale Venstre (RV)",
                                            "Alternativet (ALT)" = "Alternativet (ALT)",
                                            "Kristendemokraterne (KD)" = "Kristendemokraterne (KD)",
                                            "Frie Grønne (FG)" = "Frie Grønne (FG)")) %>%
     mutate(resp_ideology_discrete = case_when(resp_ideology %in% 0:4 ~ "Left-wing",
                                               resp_ideology %in% 5 ~ "Center",
                                               resp_ideology %in% 6:10 ~ "Right-wing"))


# CLEAN THE SINGLE VIGNETTE DATA

V <- tibble(country = "Denmark",
            respondent_type = "Politician",
            respondent_type_three = rep(D$respondent_type_three, 2),
            id = rep(paste("DK politician", 1:nrow(D)), 2),
            resp_gender = rep(D$resp_gender, 2),
            resp_party = rep(D$resp_party, 2),
            pop_party = rep(D$pop_party, 2),
            resp_ideology = rep(D$resp_ideology, 2),
            resp_ideology_discrete = rep(D$resp_ideology_discrete, 2),
            resp_exposure_binary = rep(D$resp_exposure_binary, 2),
            resp_exposure_sexist_remarks = rep(D$resp_exposure_sexist_remarks, 2),
            resp_exposure_disrespectful_remarks = rep(D$resp_exposure_disrespectful_remarks, 2),
            resp_exposure_sexualized_images = rep(D$resp_exposure_sexualized_images, 2),
            resp_exposure_violent_threats = rep(D$resp_exposure_violent_threats, 2),
            resp_exposure_persistent_harassment = rep(D$resp_exposure_persistent_harassment, 2),
            resp_personal_disrespect = rep(D$resp_personal_disrespect, 2),
            resp_other_disrespect = rep(D$resp_other_disrespect, 2),
            concern_disrespect = c(D$concern_disrespect, rep(NA, length(D$concern_disrespect))),
            govt_action = c(D$govt_action, rep(NA, length(D$govt_action))),

            incivility = c(D$V1_incivility, D$V2_incivility),
            task_number = rep(paste0("Task ", 1:2), each = nrow(D)),
            
            party_pol = c(D$`V-1-1-1`, D$`V-2-1-1`),
            woman_pol = c(D$`V-1-1-2`, D$`V-2-1-2`),
            text_pol = c(D$`V-1-1-3`, D$`V-2-1-3`),
            woman_user = c(D$`V-1-1-4`, D$`V-2-1-4`),
            text_user = c(D$`V-1-1-5`, D$`V-2-1-5`),
            gendered = c(D$`V-1-1-6`, D$`V-2-1-6`),
            
            prejudice = c(D$V1_prejudice, D$V2_prejudice),
            opinion_diff = c(D$V1_opinion_diff, D$V2_opinion_diff),
            dislike_party = c(D$V1_dislike_party, D$V2_dislike_party),
            discourage_pol = c(D$V1_discourage_pol, D$V2_discourage_pol),
            dissatisfied = c(D$V1_dissatisfied, D$V2_dissatisfied),
            troll_pol = c(D$V1_troll_pol, D$V2_troll_pol),
            troll_user = c(D$V1_troll_user, D$V2_troll_user))

V <- V %>%
     mutate(party_pol = recode(party_pol, "Party01" = "Socialdemokratiet", "Party02" = "Venstre", "Party03" = "Socialistisk Folkeparti", "Party04" = "Nye Borgerlige"),
            poc_pol = recode(woman_pol, "Pol01" = "White politician", "Pol02" = "White politician", "Pol03" = "Person of Color politician",
                                        "Pol04" = "Person of Color politician", "Pol05" = "White politician", "Pol06" = "White politician",
                                        "Pol07" = "White politician", "Pol08" = "Person of Color politician", "Pol09" = "White politician",
                                        "Pol10" = "White politician", "Pol11" = "White politician", "Pol12" = "Person of Color politician",
                                        "Pol13" = "Person of Color politician", "Pol14" = "White politician", "Pol15" = "White politician",
                                        "Pol16" = "White politician", "Pol17" = "Person of Color politician", "Pol18" = "Person of Color politician"),
            woman_pol = recode(woman_pol, "Pol01" = "Woman politician", "Pol02" = "Woman politician", "Pol03" = "Woman politician",
                                          "Pol04" = "Woman politician", "Pol05" = "Woman politician", "Pol06" = "Woman politician",
                                          "Pol07" = "Woman politician", "Pol08" = "Woman politician", "Pol09" = "Woman politician",
                                          "Pol10" = "Man politician", "Pol11" = "Man politician", "Pol12" = "Man politician",
                                          "Pol13" = "Man politician", "Pol14" = "Man politician", "Pol15" = "Man politician",
                                          "Pol16" = "Man politician", "Pol17" = "Man politician", "Pol18" = "Man politician"),
            text_pol_group = recode(text_pol, "PolText01" = "Economy", "PolText02" = "Economy",
                                              "PolText03" = "Economy", "PolText04" = "Economy",
                                              "PolText05" = "Healthcare", "PolText06" = "Healthcare",
                                              "PolText07" = "Healthcare", "PolText08" = "Healthcare",
                                              "PolText09" = "Education", "PolText10" = "Education",
                                              "PolText11" = "Education", "PolText12" = "Education",
                                              "PolText13" = "Crime", "PolText14" = "Crime",
                                              "PolText15" = "Crime", "PolText16" = "Crime",
                                              "PolText17" = "National security", "PolText18" = "National security",
                                              "PolText19" = "National security", "PolText20" = "National security"),
            woman_user = recode(woman_user, "User01" = "Woman user", "User02" = "Woman user", "User03" = "Woman user",
                                            "User04" = "Woman user", "User05" = "Woman user", "User06" = "Woman user",
                                            "User07" = "Woman user", "User08" = "Woman user", "User09" = "Woman user",
                                            "User10" = "Man user", "User11" = "Man user", "User12" = "Man user",
                                            "User13" = "Man user", "User14" = "Man user", "User15" = "Man user",
                                            "User16" = "Man user", "User17" = "Man user", "User18" = "Man user"),
            gendered = recode(gendered, "Gendered01" = "Non-gendered text", "Gendered02" = "Gendered text"))

V$party_pol_copartisan <- "Non co-partisan"
V$party_pol_copartisan[V$party_pol == "Socialdemokratiet" & V$resp_party %in% c("Socialdemokratiet (S)") |
                       V$party_pol == "Venstre" & V$resp_party %in% c("Venstre (V)") |
                       V$party_pol == "Socialistisk Folkeparti" & V$resp_party %in% c("Socialistisk Folkeparti (SF)") |
                       V$party_pol == "Nye Borgerlige" & V$resp_party %in% c("Nye Borgerlige (NB)")] <- "Co-partisan"

V <- V %>% arrange(id)

write_csv(V, "Data_Cleaned/DK_Politician_Vignette.csv")


# CLEAN THE PAIRED CONJOINT DATA

C <- tibble(country = "Denmark",
            respondent_type = "Politician",
            respondent_type_three = rep(D$respondent_type_three, 10),
            id = rep(paste("DK politician", 1:nrow(D)), 10),
            duration = rep(D$duration, 10),
            resp_gender = rep(D$resp_gender, 10),
            resp_party = rep(D$resp_party, 10),
            resp_ideology = rep(D$resp_ideology, 10),
            resp_ideology_discrete = rep(D$resp_ideology_discrete, 10),
            resp_exposure_binary = rep(D$resp_exposure_binary, 10),

            task_number = paste0("Task ", rep(rep(1:5, each = 2), nrow(D))),

            chose_profile = c(as.numeric(D$conjoint1 == "Samtale A"),
                              as.numeric(D$conjoint1 == "Samtale B"),
                              as.numeric(D$conjoint2 == "Samtale A"),
                              as.numeric(D$conjoint2 == "Samtale B"),
                              as.numeric(D$conjoint3 == "Samtale A"),
                              as.numeric(D$conjoint3 == "Samtale B"),
                              as.numeric(D$conjoint4 == "Samtale A"),
                              as.numeric(D$conjoint4 == "Samtale B"),
                              as.numeric(D$conjoint5 == "Samtale A"),
                              as.numeric(D$conjoint5 == "Samtale B")),

            party_pol =  c(D$`F-1-1-1`, D$`F-1-2-1`, D$`F-2-1-1`, D$`F-2-2-1`, D$`F-3-1-1`, D$`F-3-2-1`, D$`F-4-1-1`, D$`F-4-2-1`, D$`F-5-1-1`, D$`F-5-2-1`),
            woman_pol =  c(D$`F-1-1-2`, D$`F-1-2-2`, D$`F-2-1-2`, D$`F-2-2-2`, D$`F-3-1-2`, D$`F-3-2-2`, D$`F-4-1-2`, D$`F-4-2-2`, D$`F-5-1-2`, D$`F-5-2-2`),
            text_pol =   c(D$`F-1-1-3`, D$`F-1-2-3`, D$`F-2-1-3`, D$`F-2-2-3`, D$`F-3-1-3`, D$`F-3-2-3`, D$`F-4-1-3`, D$`F-4-2-3`, D$`F-5-1-3`, D$`F-5-2-3`),
            woman_user = c(D$`F-1-1-4`, D$`F-1-2-4`, D$`F-2-1-4`, D$`F-2-2-4`, D$`F-3-1-4`, D$`F-3-2-4`, D$`F-4-1-4`, D$`F-4-2-4`, D$`F-5-1-4`, D$`F-5-2-4`),
            text_user =  c(D$`F-1-1-5`, D$`F-1-2-5`, D$`F-2-1-5`, D$`F-2-2-5`, D$`F-3-1-5`, D$`F-3-2-5`, D$`F-4-1-5`, D$`F-4-2-5`, D$`F-5-1-5`, D$`F-5-2-5`),
            gendered =   c(D$`F-1-1-6`, D$`F-1-2-6`, D$`F-2-1-6`, D$`F-2-2-6`, D$`F-3-1-6`, D$`F-3-2-6`, D$`F-4-1-6`, D$`F-4-2-6`, D$`F-5-1-6`, D$`F-5-2-6`))

C <- C %>%
     mutate(party_pol = recode(party_pol, "Party01" = "Socialdemokratiet", "Party02" = "Venstre", "Party03" = "Socialistisk Folkeparti", "Party04" = "Nye Borgerlige"),
            poc_pol = recode(woman_pol, "Pol01" = "White politician", "Pol02" = "White politician", "Pol03" = "Person of Color politician",
                                        "Pol04" = "Person of Color politician", "Pol05" = "White politician", "Pol06" = "White politician",
                                        "Pol07" = "White politician", "Pol08" = "Person of Color politician", "Pol09" = "White politician",
                                        "Pol10" = "White politician", "Pol11" = "White politician", "Pol12" = "Person of Color politician",
                                        "Pol13" = "Person of Color politician", "Pol14" = "White politician", "Pol15" = "White politician",
                                        "Pol16" = "White politician", "Pol17" = "Person of Color politician", "Pol18" = "Person of Color politician"),
            woman_pol = recode(woman_pol, "Pol01" = "Woman politician", "Pol02" = "Woman politician", "Pol03" = "Woman politician",
                                          "Pol04" = "Woman politician", "Pol05" = "Woman politician", "Pol06" = "Woman politician",
                                          "Pol07" = "Woman politician", "Pol08" = "Woman politician", "Pol09" = "Woman politician",
                                          "Pol10" = "Man politician", "Pol11" = "Man politician", "Pol12" = "Man politician",
                                          "Pol13" = "Man politician", "Pol14" = "Man politician", "Pol15" = "Man politician",
                                          "Pol16" = "Man politician", "Pol17" = "Man politician", "Pol18" = "Man politician"),
            text_pol_group = recode(text_pol, "PolText01" = "Economy", "PolText02" = "Economy",
                                             "PolText03" = "Economy", "PolText04" = "Economy",
                                             "PolText05" = "Healthcare", "PolText06" = "Healthcare",
                                             "PolText07" = "Healthcare", "PolText08" = "Healthcare",
                                             "PolText09" = "Education", "PolText10" = "Education",
                                             "PolText11" = "Education", "PolText12" = "Education",
                                             "PolText13" = "Crime", "PolText14" = "Crime",
                                             "PolText15" = "Crime", "PolText16" = "Crime",
                                             "PolText17" = "National security", "PolText18" = "National security",
                                             "PolText19" = "National security", "PolText20" = "National security"),
            woman_user = recode(woman_user, "User01" = "Woman user", "User02" = "Woman user", "User03" = "Woman user",
                                            "User04" = "Woman user", "User05" = "Woman user", "User06" = "Woman user",
                                            "User07" = "Woman user", "User08" = "Woman user", "User09" = "Woman user",
                                            "User10" = "Man user", "User11" = "Man user", "User12" = "Man user",
                                            "User13" = "Man user", "User14" = "Man user", "User15" = "Man user",
                                            "User16" = "Man user", "User17" = "Man user", "User18" = "Man user"),
            gendered = recode(gendered, "Gendered01" = "Non-gendered text", "Gendered02" = "Gendered text"))

C$party_pol_copartisan <- "Non co-partisan"
C$party_pol_copartisan[C$party_pol == "Socialdemokratiet" & C$resp_party %in% c("Socialdemokratiet (S)") |
                       C$party_pol == "Venstre" & C$resp_party %in% c("Venstre (V)") |
                       C$party_pol == "Socialistisk Folkeparti" & C$resp_party %in% c("Socialistisk Folkeparti (SF)") |
                       C$party_pol == "Nye Borgerlige" & C$resp_party %in% c("Nye Borgerlige (NB)")] <- "Co-partisan"

C <- C %>% arrange(id)

write_csv(C, "Data_Cleaned/DK_Politician_Conjoint.csv")

